Node.js のバージョン管理ツール Volta を使ってみる
Node.js のバージョン管理ツールはいくつかありますが、最近リリースされた Volta という Rust 製のバージョン管理ツールが良さそうだったので使ってみました。今までは Node.js のバージョン管理ツールに nodebrew というツールを使っていましたが、Volta を見つけせっかくだし乗り換えて見ようと思ったのがきっかけです。
Volta とは
Volta は Rust で作られた OSS の Node.js のバージョン管理ツールです。Rust 製で静的バイナリとしてビルドされるため早いです。また、Volta を使えば、複数プロジェクトでバージョンが違う Node.js プロジェクトがあった場合に、手動で切り替えなくても、プロジェクトを移動することで自動的にバージョンが切り替わってくれます。
機能
特徴的な機能としては以下のようなものがあります。
- プロジェクトごとのシームレスなバージョン切り替え
- Windows およびすべての Unix シェルを含むクロスプラットフォームのサポート
- パッケージマネージャーをサポート(npm, yarn)
Getting Started
まずは、基本的な使い方を見ていきます。
インストール
bash, zsh, fish の場合は、以下のコマンドでインストールすることができます。パスも自動的に通してくれます。
curl https://get.volta.sh | bash
Windowsの場合は、インストーラーが用意されています
https://github.com/volta-cli/volta/releases/download/v0.9.2/volta-0.9.2-windows-x86_64.msi
Node.jsをインストールする
Node.js v12 LTS をインストールしてみます。
volta install node@12 node --version v12.19.0
特定のバージョンもインストールできます
volta install node@14.13.1 node --version v14.13.1
Volta の pin を使ってディレクトリごとに Node.js と パッケージマネージャ のバージョンを固定する
ここまでは、普通の Node.js のバージョン管理ツールですが、Volta の真価はこのディレクトリの pin 機能かなと思っています。この機能を使うことで、複数人でのチーム開発の際に Node.js とパッケージマネージャのバージョンを固定することができます。具体的には、プロジェクトの package.json
に Node.js のバージョンを保存します。
ディレクトリごとにNode.jsとyarnのバージョンを固定する
まずは、2つのディレクトリを作成します。
$ mkdir volta-test-node-v12 $ mkdir volta-test-node-v14
作成した volta-test-node-v12
ディレクトリに移動して、 npm init
して package.json
を作成します。package.json
が作成されたらそのディレクトリで、volta の pin コマンドを実行します。
$ cd volta-test-node-v12 $ npm init $ volta pin node@12.19.0 success: pinned node@12.19.0 (with npm@6.14.8) in package.json $ volta pin yarn@1.22.1 success: pinned yarn@1.22.1 in package.json
この例では、 volta-test-node-v12
ディレクトリの Node.js のバージョンを v12.19.0
に固定して、パッケージマネージャーの yarn のバージョンを 1.22.1
に固定したことになります。
package.json
は以下のように更新されています。
{ "name": "volta-test-node-v12", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "volta": { "node": "12.19.0", "yarn": "1.22.1" } }
同じように volta-test-node-v14
ディレクトリも設定してみます。今度は、node のバージョンを v14.15.0
、yarn のバージョンを 1.17.3
しました。
$ cd volta-test-node-v14 $ npm init $ volta pin node@14.15.0 success: pinned node@14.15.0 (with npm@6.14.8) in package.json $ volta pin yarn@1.17.3 success: pinned yarn@1.17.3 in package.json
これで、2つのディレクトリの Node.js のバージョンとパッケージマネージャーのバージョンを固定しました。この状態でまずは、 volta-test-node-v12
フォルダに移動してバージョンを確認してみます。
$ cd volta-test-node-v12 $ node --version v12.19.0 $ yarn --version 1.22.1
指定したバージョンになっています。次に volta-test-node-v14
に移動してみます。
$ cd volta-test-node-v14 $ node --version v14.15.0 $ yarn --version 1.17.3
ディレクトリの移動しかしていませんが、node のバージョンと yarn のバージョンが自動的に更新されているのがわかるかと思います。このように volta の pin 機能を使うことでディレクトリごとに バージョンを固定することができてとても便利です。
まとめ
以上、Volta の使い方についてまとめてみました。まだ、OSS として開発中で安定版にはなっていないですが、これからどんどん機能追加がなされていくと思います。興味がある方は機能フィードバックや OSS コントリビュートを行っても良いかなと思います。
参考
補足 Node.js バージョン管理ツールの種類
Node.js のバージョン管理ツールは他にも以下のようなのツールがあります。